#include "../../lv_examples.h"
#if LV_USE_ROLLER && LV_BUILD_EXAMPLES

static void event_handler(lv_event_t * e)
{
    // 获取事件代码表示的事件发生类型
    lv_event_code_t code = lv_event_get_code(e);
    // 获取事件目标对象
    lv_obj_t * obj = lv_event_get_target(e);
    // 检测事件代码是否发生值改变事件
    if(code == LV_EVENT_VALUE_CHANGED) {
        char buf[32];
        // 获取当前选中的选项，装入数组
        lv_roller_get_selected_str(obj, buf, sizeof(buf));
        // 打印日志
        LV_LOG_USER("Selected month: %s\n", buf);
    }
}

/**
 * An infinite roller with the name of the months
 */
void lv_example_roller_1(void)
{
    // 创建一个滚动选择器
    lv_obj_t * roller1 = lv_roller_create(lv_scr_act());
    // 设置滚轮的选项，第一个参数放所选择的滚轮选择器，最后一个参数放选择的模式，LV_ROLLER_MODE_INFINITE 模式使得滚轮可以无限循环滚动。
    lv_roller_set_options(roller1,
                          "January\n"
                          "February\n"
                          "March\n"
                          "April\n"
                          "May\n"
                          "June\n"
                          "July\n"
                          "August\n"
                          "September\n"
                          "October\n"
                          "November\n"
                          "December",
                          LV_ROLLER_MODE_INFINITE);

    // 设置可见行，就是滚轮中可看到的选项数
    lv_roller_set_visible_row_count(roller1, 4);
    // 设置滚轮位置为居中
    lv_obj_center(roller1);
    // 添加事件回调，此处任意事件回调
    lv_obj_add_event_cb(roller1, event_handler, LV_EVENT_ALL, NULL);
}

#endif
